﻿<!DOCTYPE HTML>
<html lang="zh">
<head>
<title>点击控件 - 语法 &amp; 使用 | AutoHotkey v2</title>
<meta name="description" content="The 点击控件 function sends a mouse button or mouse wheel event to a control." />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<link href="../static/theme.css" rel="stylesheet" type="text/css" />
<script src="../static/content.js" type="text/javascript"></script>
<script type="text/javascript">$(function(){0<=window.navigator.userAgent.toLowerCase().indexOf("ucbrowser")&&CaoNiMaDeUc()})</script>
</head>
<body>

<h1>点击控件</h1>

<p>发送鼠标按钮或鼠标滚轮事件到控件.</p>

<pre class="Syntax"><span class="func">点击控件</span> <span class="optional">Control-or-Pos, WinTitle, WinText, WhichButton, ClickCount, Options, ExcludeTitle, ExcludeText</span></pre>
<h2 id="Parameters">参数</h2>
<dl>

  <dt>Control-or-Pos</dt>
  <dd>
      <p>类型: <a href="../Concepts.htm#strings">字符串</a>, <a href="../Concepts.htm#numbers">整数</a>或<a href="../Objects.htm">对象</a></p>
      <p>如果省略此参数, 则目标窗口本身将被点击. 否则, 将使用以下两种模式之一.</p>
      <p>模式 1(位置): 指定相对于目标窗口<a href="CoordMode.htm#Client">客户端区域</a>左上角的 X 和 Y 坐标. X 坐标必须在 Y 坐标之前, 并且它们之间必须至少有一个空格或制表符. 例如: <code>X55 Y33</code>. 如果在指定的坐标上有一个控件, 它将在这些确切的坐标上发送点击事件. 如果没有控件, 目标窗口本身将被发送事件(根据窗口的性质, 可能没有效果).</p>
    <p class="note"><strong>注意</strong>: 在模式 1 中, 会忽略 <em>Options</em> 参数中的 X 和 Y 字母选项.</p>      
      <p>模式 2(控件): 指定控件的 ClassNN, 文本或 HWND, 或一个具有 <code>Hwnd</code> 属性的对象. 有关详情, 请参阅<a href="Control.htm#Parameter">控件的参数</a>.</p>
      <p>默认情况下, 模式 2 优先于模式 1. 例如, 在一种不太可能发生的情况中某个控件的文本或 ClassNN 格式为 &quot;Xnnn Ynnn&quot;, 那么此时会使用模式 2. 要覆盖此行为而无条件使用模式 1, 请在 <em>Options</em>中加上单词 Pos, 如下例所示: <code>点击控件 "x255 y152", WinTitle,,,, "Pos"</code>.</p>
  </dd>

  <dt>WinTitle</dt>
  <dd>
    <p>类型: <a href="../Concepts.htm#strings">字符串</a>, <a href="../Concepts.htm#numbers">整数</a>或<a href="../Objects.htm">对象</a></p>
    <p>识别目标窗口的窗口标题或其他条件. 请参阅 <a href="../misc/WinTitle.htm">WinTitle</a>.</p>
  </dd>

  <dt>WinText</dt>
  <dd>
    <p>类型: <a href="../Concepts.htm#strings">字符串</a></p>
    <p>如果存在, 此参数必须是目标窗口的单个文本元素的子字符串(和内置的 Window Spy 工具显示的一样). 如果 <a href="DetectHiddenText.htm">检测隐藏文本</a> 为 ON, 那么会检测隐藏文本元素.</p>
  </dd>

  <dt>WhichButton</dt>
  <dd>
      <p>类型: <a href="../Concepts.htm#strings">字符串</a></p>
      <p>要点击的按钮: LEFT, RIGHT, MIDDLE(或这些单词的首个字母). 如果省略或为空, 则使用 LEFT 按钮.</p>
      <p>支持 X1(XButton1, 第四个鼠标按钮) 和 X2(XButton2, 第五个鼠标按钮).</p>
      <p>支持 WheelUp(或 WU), WheelDown(或 WD), WheelLeft(或 WL) 和 WheelRight(或 WR). 此时, <em>ClickCount</em>为需要转动的滚轮格数.</p>
    </dd>

  <dt>ClickCount</dt>
  <dd>
    <p>类型: <a href="../Concepts.htm#numbers">整数</a></p>
    <p>发送的点击次数. 如果省略或为空, 则点击 1 次.</p>
  </dd>

  <dt>Options</dt>
  <dd>
      <p>类型: <a href="../Concepts.htm#strings">字符串</a></p>
      <p>零个或多个下列选项字母组成的系列. 例如: d x50 y25</p>
      <p><strong>NA</strong>: 也许可以提高可靠性. 请参阅后面的<a href="#Reliability">可靠性</a>.</p>
      <p><strong>D</strong>: 按住鼠标按钮不放(即生成按下事件). 如果 <strong>D</strong> 和 <strong>U</strong> 选项都没有, 则会发送完整的点击事件(按下事件和弹起事件).</p>
      <p><strong>U</strong>: 释放鼠标按钮(即生成弹起事件). 此选项不能和 <strong>D</strong> 选项同时使用.</p>
      <p><strong>Pos</strong>: 在 <em>Options</em> 的任意位置指定单词 Pos, 这样会无条件使用 <em>Control-or-Pos</em> 参数中描述的 X/Y 位置模式.</p>
      <p><strong>Xn</strong>: 指定 <strong>n</strong> 为要点击的相对于控件左上角的 X 坐标. 如果未指定, 则在控件的水平中心点击.</p>
      <p><strong>Yn</strong>: 指定 <strong>n</strong> 为要点击的相对于控件左上角的 Y 坐标. 如果未指定, 则在控件的垂直中心点击.</p>
      <p><strong>X</strong> 和 <strong>Y</strong> 选项中使用十进制(不是十六进制数) 数字.</p>
  </dd>

  <dt>ExcludeTitle</dt>
  <dd>
    <p>类型: <a href="../Concepts.htm#strings">字符串</a></p>
    <p>标题中含有此参数值的窗口将被排除.</p>
  </dd>

  <dt>ExcludeText</dt>
  <dd>
    <p>类型: <a href="../Concepts.htm#strings">字符串</a></p>
    <p>文本中含有此参数值的窗口将被排除.</p>
  </dd>

</dl>

<h2 id="Error_Handling">错误处理</h2>
<p>在以下情况下会抛出异常:</p>
<ul>
  <li>找不到目标窗口.</li>
  <li>找不到目标控件, 且 <em>Control-or-Pos</em> 没有指定有效的位置.</li>
  <li>非常罕见: X 或 Y 位置被省略, 且无法确定控件的位置.</li>
  <li>检测到无效参数.</li>
</ul>

<h2 id="Reliability">可靠性</h2>
<p>要提高可靠性, 尤其是在 点击控件 期间用户同时在使用鼠标, 请尝试下面的一种或两种方法也许会有所帮助:</p>
<p>1) 在 点击控件 前, 使用 <code><a href="SetControlDelay.htm">设置控件延迟</a> -1</code>. 这样可以避免在点击时按住鼠标, 减少对用户使用鼠标的干扰.</p>
<p>2) 在第六个参数(<em>Options</em>) 中指定字符串 NA, 如下所示:</p>
<pre>设置控件延迟 -1
点击控件 "Toolbar321", WinTitle,,,, "NA"</pre>
<p><code>NA</code> 可以避免激活目标窗口, 同时避免混淆它和脚本的输入, 这样可以防止鼠标实际移动产生的冲突(但通常只在目标窗口不活动时). 然而, 此方法不是对所有的窗口和控件都有效.</p>
<h2 id="Remarks">备注</h2>
<p>并非所有的应用程序都遵守 <em>ClickCount</em> 大于 1 的方式来转动鼠标滚轮. 对于这些应用, 使用 循环 来转动多个格数, 例如这个例子转动 5 格:</p>
<pre>循环 5
    点击控件 <i>Control</i>, <i>WinTitle</i>, <i>WinText</i>, "WheelUp"</pre>
<p>窗口标题和文本是区分大小写的. 除非 <a href="DetectHiddenWindows.htm">检测隐藏窗口</a> 被打开, 否则不会检测隐藏窗口.</p>

<h2 id="Related">相关</h2>
<p><a href="SetControlDelay.htm">设置控件延迟</a>, <a href="Control.htm">Control 函数</a>, <a href="Click.htm">点击</a></p>
<h2 id="Examples">示例</h2>
<div class="ex" id="ExBasic">
<p><a href="#ExBasic">#1</a></p>
<pre>点击控件 "OK", "Some Window Title"  <em>; 点击 OK 按钮</em>
点击控件 "x55 y77", WinTitle  <em>; 在坐标上进行点击. 注意 X 和 Y 之间的空隙.</em></pre>
</div>

<div class="ex" id="ExReliability">
<p><a href="#ExReliability">#2</a>: 下面的方法可以提高可靠性并减少副作用:</p>
<pre>设置控件延迟 -1
点击控件 "Toolbar321", WinTitle,,,, "NA x192 y10"  <em>; 使用 NA 模式在相对于命名控件的坐标处进行点击.</em></pre>
</div>

</body>
</html>